package com.sky.poi;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class write {
    /**
     * 写出数据到Excel文件中
     */
    @Test
    public void writeExcelXls() throws IOException {
        //创建Excel工作簿对象 03版本 和 Excel表Sheet对象
        HSSFWorkbook workbook = new HSSFWorkbook();//创建工作簿
        HSSFSheet sheet = workbook.createSheet();//创建工作表

        //创建Excel行对象
        HSSFRow row1 = sheet.createRow(0);//创建第一行

        //创建Excel单元格对象
        //HSSFCell cell = row.createCell(0);//创建第一列单元格
        //上面两个代表单元格(1,1)

        //创建表头第一行的单元格
        row1.createCell(0).setCellValue("商品主键id");
        row1.createCell(1).setCellValue("商品名称");
        row1.createCell(2).setCellValue("图片资源路径");
        row1.createCell(3).setCellValue("订单id");
        row1.createCell(4).setCellValue("果蔬id");
        row1.createCell(5).setCellValue("套餐id");
        row1.createCell(6).setCellValue("果蔬口味");
        row1.createCell(7).setCellValue("商品数量");
        row1.createCell(8).setCellValue("金额");

        //写入数据
        HSSFRow row2 = createRow(sheet, 1);//创建第二行
        HSSFRow row3 = createRow(sheet, 2);//创建第三行

        //设置数据
        row2.createCell(0).setCellValue(1);
        row2.createCell(1).setCellValue("商品1");
        row2.createCell(2).setCellValue("img/1.jpg");
        row2.createCell(3).setCellValue(1);
        row2.createCell(4).setCellValue(1);
        row2.createCell(5).setCellValue(1);
        row2.createCell(6).setCellValue("味道1");
        row2.createCell(7).setCellValue(1);
        row2.createCell(8).setCellValue(10.0);

        row3.createCell(0).setCellValue(2);
        row3.createCell(1).setCellValue("商品2");
        row3.createCell(2).setCellValue("img/2.jpg");
        row3.createCell(3).setCellValue(1);
        row3.createCell(4).setCellValue(2);
        row3.createCell(5).setCellValue(2);
        row3.createCell(6).setCellValue("味道2");
        row3.createCell(7).setCellValue(2);
        row3.createCell(8).setCellValue(20.0);
        //创建用于写出数据的文件字节输出流
        try (FileOutputStream outputStream = new FileOutputStream("D:\\desktop\\TowerOfProgramming\\CangQiongWaiMai\\sky-take-out\\sky-server\\src\\main\\java\\com\\sky\\poi\\商品信息测试.xls")) {
            workbook.write(outputStream);
            System.out.println("数据写入成功！");
            outputStream.flush();//刷新缓冲区
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            workbook.close();//关闭工作簿资源
        }


    }

    public HSSFRow createRow(HSSFSheet sheet, int rowIndex) {
        HSSFRow row = sheet.createRow(rowIndex);
        return row;
    }
    public XSSFRow createRow(XSSFSheet sheet, int rowIndex) {
        XSSFRow row = sheet.createRow(rowIndex);
        return row;
    }
    @Test
    public void writeExcelXlsx() throws IOException {
        //创建Excel工作簿对象 07版本 和 Excel表Sheet对象
        XSSFWorkbook workbook = new XSSFWorkbook();//创建工作簿
        XSSFSheet sheet = workbook.createSheet();//创建工作表

        //创建Excel行对象
        XSSFRow row1 = sheet.createRow(0);//创建第一行

        //创建Excel单元格对象
        //HSSFCell cell = row.createCell(0);//创建第一列单元格
        //上面两个代表单元格(1,1)

        //创建表头第一行的单元格
        row1.createCell(0).setCellValue("商品主键id");
        row1.createCell(1).setCellValue("商品名称");
        row1.createCell(2).setCellValue("图片资源路径");
        row1.createCell(3).setCellValue("订单id");
        row1.createCell(4).setCellValue("果蔬id");
        row1.createCell(5).setCellValue("套餐id");
        row1.createCell(6).setCellValue("果蔬口味");
        row1.createCell(7).setCellValue("商品数量");
        row1.createCell(8).setCellValue("金额");

        //写入数据
        XSSFRow row2 = createRow(sheet, 1);//创建第二行
        XSSFRow row3 = createRow(sheet, 2);//创建第三行

        //设置数据
        row2.createCell(0).setCellValue(1);
        row2.createCell(1).setCellValue("商品1");
        row2.createCell(2).setCellValue("img/1.jpg");
        row2.createCell(3).setCellValue(1);
        row2.createCell(4).setCellValue(1);
        row2.createCell(5).setCellValue(1);
        row2.createCell(6).setCellValue("味道1");
        row2.createCell(7).setCellValue(1);
        row2.createCell(8).setCellValue(10.0);

        row3.createCell(0).setCellValue(2);
        row3.createCell(1).setCellValue("商品2");
        row3.createCell(2).setCellValue("img/2.jpg");
        row3.createCell(3).setCellValue(1);
        row3.createCell(4).setCellValue(2);
        row3.createCell(5).setCellValue(2);
        row3.createCell(6).setCellValue("味道2");
        row3.createCell(7).setCellValue(2);
        row3.createCell(8).setCellValue(20.0);
        //创建用于写出数据的文件字节输出流
        try (FileOutputStream outputStream = new FileOutputStream("D:\\desktop\\TowerOfProgramming\\CangQiongWaiMai\\sky-take-out\\sky-server\\src\\main\\java\\com\\sky\\poi\\商品信息测试.xlsx")) {
            workbook.write(outputStream);
            System.out.println("数据写入成功！");
            outputStream.flush();//刷新缓冲区
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            workbook.close();//关闭工作簿资源
        }


    }
}


